"""
假如你是一位地理老师，你希望进行中国各省省会的一个小测验。
你希望随机调整问题的次序，这样每份试卷都是独一无二的，这让任何人都不能从其他人那里抄袭答案。
下面是程序所做的事：
• 创建 n 份不同的测验试卷。
• 为每份试卷创建 34 个多重选择题，次序随机。
• 为每个问题提供一个正确答案 和 3 个随机的错误答案，次序随机。
• 将测验试卷写到 n 个文本文件中。
• 将答案写到 n 个文本文件中。
这意味着代码需要做下面的事：
• 将省和它们的省会保存在一个字典中。
• 针对测验文本文件和答案文本文件，调用 open()、write()和 close()。
• 利用 random.shuffle()随机调整问题和多重选项的次序。
"""

import random
import Provinces
import os

path = ".\\file\\"


def randomQuizGenerator(stuCount):
    provinces = Provinces.provinces  # 省:省会
    capitals = list(Provinces.provinces.keys())  # 省会
    for num in range(1, stuCount + 1):

        # 生成试卷文件和答案文件
        quizFile = open(path + "capitalsquiz_%s.txt" % num, 'w', encoding='utf-8')
        answerFile = open(path + "capitalsquiz_answer_%s.txt" % num, 'w', encoding='utf-8')

        quizFile.write("\n")
        quizFile.write((' ' * 20) + '中国省会测试题 (%s)\n\n' % (num))
        quizFile.write("\t班级：\t\t\t姓名：\t\t\t得分：\n\n")

        # 打乱列表的顺序
        random.shuffle(capitals)

        for i in range(len(capitals)):
            # print("%s、%s的省会是（）。\n" % (i + 1, capitals[i]))
            quizFile.write("%s、%s的省会是（\t）。\n" % (i + 1, capitals[i]))

            # 正确答案
            correctAnswer = provinces[capitals[i]]
            # print("%s\n" % correctAnswer)

            # 错误答案
            wrongAnswers = list(provinces.values())
            wrongAnswers.remove(correctAnswer)  # 按key删除
            # del wrongAnswers[wrongAnswers.index(correctAnswer)]  # 按index删除
            wrongAnswers = random.sample(wrongAnswers, 3)  # 随机取3个错误选项

            # 备选答案
            answerOptions = wrongAnswers + [correctAnswer]
            random.shuffle(answerOptions)
            # print(answerOptions)

            answerFile.write("%s、%s\n" % (i + 1, "ABCD"[answerOptions.index(correctAnswer)]))

            # 备选答案写入文件
            for j in range(len(answerOptions)):
                # print("\t%s、%s\n" % ("ABCD"[j], answerOptions[j]))
                quizFile.write("\t%s、%s\n" % ("ABCD"[j], answerOptions[j]))

        quizFile.close()
        answerFile.close()

        print("试卷生成进度：%d/%d" % (num, stuCount))


if __name__ == '__main__':
    studentCount = 5  # 学生数量
    randomQuizGenerator(studentCount)
